package kr.hkit.androidcomplete03.ch22;

import java.util.Random;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

public class Ball {
	int x,y;				//공의 좌표
	int dx, dy;			//공의 단위 이동 거리(속도) & 방향(+,-)
	int radius;			//공의 반지름 (공의 크기)
	int color;			//공의 색깔
	int count;			//공이 벽에 부딪히는 횟수.  (다섯번 부딪히면 사라짐.)
	Paint paint;

	// 공 생성
	static Ball create(int x, int y){
		Random ran = new Random();
		Ball newBall = new Ball();
		
		newBall.paint = new Paint(Paint.ANTI_ALIAS_FLAG);
		newBall.x = x;
		newBall.y = y;
		newBall.radius = ran.nextInt(50);
		do{
			newBall.dx = ran.nextInt(11) -5; //ran은 0~10까지 제조. -5하면 이동방향이 -5~5까지
			newBall.dy = ran.nextInt(11) -5;
		}while(newBall.dx ==0 || newBall.dy == 0); //수평, 수직이동은 제외
	
		newBall.count = 0;
		newBall.color = Color.rgb(ran.nextInt(256), ran.nextInt(256), ran.nextInt(256));
		
		return newBall;
	}
	
	// 공 이동.
	void Move(int width, int height){ // width, height 는 스크린 크기
		x = x+dx;
		y = y+dy;
		
		// 좌표가 반지름보다 작을때. (양 옆)
		if( x < radius || x > (width - radius)){
			dx = dx * (-1);		//x방향 전환
			count++;
		}
		// 좌표가 반지름보다 작을때. (아래위)
		if( y < radius || y > (height - radius)){
			dy = dy * (-1);		//y방향 전환
			count++;
		}
	}
	
	//그리기
	void draw(Canvas canvas) {
		int r;
		int alpha;
		
		for(r = radius, alpha = 1; r>4; r--, alpha +=5){
			//argb는 연하게 그리는거.
			paint.setColor(Color.argb(alpha ,Color.red(color), Color.green(color), Color.blue(color)));
			canvas.drawCircle(x, y, radius, paint);
		}
	}
}	
